Current centralized architecture information systems are expensive to build and maintain, and may be inefficient and vulnerable to cyber-attack. An information system that employs a decentralized ledger may overcome some of the above-noted limitations inherent in a centralized architecture messaging system, but such a decentralized architecture system may require large bandwidth capacity and large computational resources to exchange information among system users.
A blockchain is a distributed database that may be used to maintain a continuously growing list of records, sometimes called blocks. Each block contains a timestamp and a link to a previous block. Each block may contain one or more transactions and a block header. A blockchain typically is managed by peer-to-peer nodes in a network, the nodes collectively adhering to a protocol for validating new blocks. By design, blockchains are inherently resistant to modification of the data. Typically, once recorded, the data in any given block cannot be altered retroactively without the alteration of all subsequent blocks and the collusion of the network. Functionally, therefore, a blockchain may serve as “an open, distributed ledger” that records transactions in a verifiable and permanent way without use of a trusted authority or central server. This makes blockchains potentially suitable for recording events and other records management activities, identity management, transaction processing, and documenting provenance.
One feature of blockchains, which is both an advantage and a disadvantage, is immutability. Blockchains typically are “append-only” systems, meaning data may be added to a blockchain, but cannot be taken away or modified. The limited ability to modify or delete data resident in a blockchain may prevent use of this technology in some applications.
An emerging technology that may be incorporated into blockchains is known as “smart contracts.” Smart contracts are essentially a sequence of computer instructions, residing on the blockchain, that automatically execute according to those instructions when specified events occur. However, because blockchains largely are immutable, should the computer instructions contain an error, the only way to update the smart contract may be to post a new smart contract to the blockchain. The new smart contract then applies to subsequent blocks, but may not affect previous blocks. The new smart contract also may force a “hard fork” in the blockchain, thereby complicating reconstruction of subsequent blocks.
Consensus is a method for validating the order of blocks and their transactions, on a blockchain. The correct ordering of transactions may be important, because many transactions have a dependency on one or more prior transactions. On a blockchain, no centralized authority determines the transaction order; instead, many validating nodes (or peers) implement the consensus protocol. Consensus ensures that a quorum of nodes agree on the order in which transactions are appended to the blockchain. By resolving any discrepancies in the proposed transaction order, consensus guarantees that all blockchain nodes are operating on an identical ledger. In other words, consensus guarantees the integrity and consistency of all blockchain transactions.